/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Engine2D.renderer;

import java.nio.DoubleBuffer;
import java.nio.FloatBuffer;
import java.nio.IntBuffer;
import org.lwjgl.opengl.GL11;

/**
 *
 * @author Garys
 */
public interface GLRenderer {

    /**
     * 
     */
    /**
     * 
     */
    /**
     * 
     */
    /**
     * 
     */
    /**
     * 
     */
    /**
     * 
     */
    /**
     * 
     */
    /**
     * 
     */
    /**
     * 
     */
    /**
     * 
     */
    /**
     * 
     */
    /**
     * 
     */
    /**
     * 
     */
    /**
     * 
     */
    /**
     * 
     */
    /**
     * 
     */
    /**
     * 
     */
    /**
     * 
     */
    /**
     * 
     */
    /**
     * 
     */
    /**
     * 
     */
    /**
     * 
     */
    /**
     * 
     */
    /**
     * 
     */
    /**
     * 
     */
    /**
     * 
     */
    /**
     * 
     */
    /**
     * 
     */
    /**
     * 
     */
    public static final int GL_PROJECTION = GL11.GL_PROJECTION,
            GL_SMOOTH = GL11.GL_SMOOTH,
            GL_LEQUAL = GL11.GL_LEQUAL,
            GL_PERSPECTIVE_CORRECTION_HINT = GL11.GL_PERSPECTIVE_CORRECTION_HINT,
            GL_NICEST = GL11.GL_NICEST,
            GL_SRC_ALPHA = GL11.GL_SRC_ALPHA,
            GL_ONE_MINUS_SRC_ALPHA = GL11.GL_ONE_MINUS_SRC_ALPHA,
            GL_BLEND = GL11.GL_BLEND,
            GL_COLOR_BUFFER_BIT = GL11.GL_COLOR_BUFFER_BIT,
            GL_DEPTH_BUFFER_BIT = GL11.GL_DEPTH_BUFFER_BIT,
            GL_QUADS = GL11.GL_QUADS,
            GL_TEXTURE_WRAP_S = GL11.GL_TEXTURE_WRAP_S,
            GL_TEXTURE_WRAP_T = GL11.GL_TEXTURE_WRAP_T,
            GL_REPEAT = GL11.GL_REPEAT,
            GL_TEXTURE_MIN_FILTER = GL11.GL_TEXTURE_MIN_FILTER,
            GL_TEXTURE_MAG_FILTER = GL11.GL_TEXTURE_MAG_FILTER,
            GL_LINEAR = GL11.GL_LINEAR,
            GL_RGBA = GL11.GL_RGBA,
            GL_UNSIGNED_BYTE = GL11.GL_UNSIGNED_BYTE,
            GL_DEPTH_TEST = GL11.GL_DEPTH_TEST,
            GL_TEXTURE_2D = GL11.GL_TEXTURE_2D,
            GL_MODELVIEW = GL11.GL_MODELVIEW,
            GL_LINES = GL11.GL_LINES,
            GL_LINE_SMOOTH = GL11.GL_LINE_SMOOTH,
            GL_LINE_STRIP = GL11.GL_LINE_STRIP,
            GL_VERTEX_ARRAY = GL11.GL_VERTEX_ARRAY,
            GL_TEXTURE_COORD_ARRAY = GL11.GL_TEXTURE_COORD_ARRAY,
            GL_COLOR_ARRAY = GL11.GL_COLOR_ARRAY,
            GL_TRIANGLE_STRIP = GL11.GL_TRIANGLE_STRIP;  
            
 
    

    /**
     * 
     * @param geom
     */
    public void glBegin(int geom);

    /**
     * 
     * @param target
     * @param texture
     */
    public void glBindTexture(int target, int texture);

    /**
     * 
     * @param src
     * @param dest
     */
    public void glBlendFunc(int src, int dest);

    /**
     * 
     * @param bit
     */
    public void glClear(int bit);

    /**
     * 
     * @param red
     * @param green
     * @param blue
     * @param alpha
     */
    public void glClearColor(float red, float green, float blue, float alpha);

    /**
     * 
     * @param depth
     */
    public void glClearDepth(float depth);

    /**
     * 
     * @param plane
     * @param buffer
     */
    public void glClipPlane(int plane, DoubleBuffer buffer);

    /**
     * 
     * @param red
     * @param green
     * @param blue
     * @param alpha
     */
    public void glColor4f(float red, float green, float blue, float alpha);
    
    /**
     * 
     * @param size
     * @param stride
     * @param pointer
     */
    public void glColorPointer(int size, int stride, FloatBuffer pointer);
    
    /**
     * 
     * @param mode
     * @param first
     * @param count
     */
    public void glDrawArrays(int mode, int first, int count);

    /**
     * 
     * @param func
     */
    public void glDepthFunc(int func);

    /**
     * 
     * @param cap
     */
    public void glDisable(int cap);

    /**
     * 
     * @param cap
     */
    public void glEnable(int cap);
    
    /**
     * 
     * @param cap
     */
    public void glEnableClientState(int cap);

    /**
     * 
     */
    public void glEnd();

    /**
     * 
     * @param textures
     */
    public void glGenTextures(IntBuffer textures);

    /**
     * 
     * @param target
     * @param mode
     */
    public void glHint(int target, int mode);
    
    /**
     * 
     * @param width
     */
    public void glLineWidth(float width);

    /**
     * 
     */
    public void glLoadIdentity();
    
    /**
     * 
     * @param mode
     */
    public void glMatrixMode(int mode);

    /**
     * 
     * @param x
     * @param y
     * @param z
     */
    public void glNormal3f(float x, float y, float z);

    /**
     * 
     * @param left
     * @param right
     * @param bottom
     * @param top
     * @param zNear
     * @param zFar
     */
    public void glOrtho(double left, double right, double bottom, double top, double zNear, double zFar);

    /**
     * 
     */
    public void glPushMatrix();

    /**
     * 
     */
    public void glPopMatrix();

    /**
     * 
     * @param mode
     */
    public void glShadeModel(int mode);

    /**
     * 
     * @param u
     * @param v
     */
    public void glTexCoord2f(float u, float v);
    
    /**
     * 
     * @param size
     * @param stride
     * @param pointer
     */
    public void glTexCoordPointer(int size, int stride, FloatBuffer pointer);

    /**
     * 
     * @param target
     * @param pname
     * @param param
     */
    public void glTexParameterf(int target, int pname, float param);
    
    /**
     * 
     * @param x
     * @param y
     * @param z
     */
    public void glTranslatef(float x, float y, float z);

    /**
     * 
     * @param x
     * @param y
     */
    public void glVertex2f(float x, float y);

    /**
     * 
     * @param x
     * @param y
     */
    public void glVertex2i(int x, int y);

    /**
     * 
     * @param x
     * @param y
     * @param z
     */
    public void glVertex3f(float x, float y, float z);
    
    /**
     * 
     * @param size
     * @param stride
     * @param pointer
     */
    public void glVertexPointer(int size, int stride, FloatBuffer pointer);

    /**
     * 
     * @param x
     * @param y
     * @param w
     * @param h
     */
    public void glViewport(int x, int y, int w, int h);

    /**
     * 
     * @param w
     * @param h
     */
    public void initDisplay(int w, int h);
    
    /**
     * 
     * @param xsize
     * @param ysize
     */
    public void setOrtho(int xsize, int ysize);
    
    
    
}
